// 枚举: 使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript支持数字的和基于字符串的枚举。
// 与接口不同的是 枚举主要用于定义一组常量,同时 enum 是 typescript 的基础类型
const enum Direction {
  Up = "Up",
  Down = "Down",
  Left = "Left",
  Right = "Right"
}
/*
举成员使用 常量枚举表达式初始化。 常数枚举表达式是TypeScript表达式的子集，它可以在编译阶段求值。 当一个表达式满足下面条件之一时，它就是一个常量枚举表达式：
  一个枚举表达式字面量（主要是字符串字面量或数字字面量）
  一个对之前定义的常量枚举成员的引用（可以是在不同的枚举类型中定义的）
  带括号的常量枚举表达式
  一元运算符 +, -, ~其中之一应用在了常量枚举表达式
  常量枚举表达式做为二元运算符 +, -, *, /, %, <<, >>, >>>, &, |, ^的操作对象。 若常数枚举表达式求值后为 NaN或 Infinity，则会在编译阶段报错。
*/
const enum FileAccess {
  // constant members
  None,
  Read = 1 << 1,
  Write = 1 << 2,
  ReadWrite = Read | Write,
  // computed member
}